package com.jzsm.modules.sender.senderService.impl.weixin.utils;

import com.alibaba.fastjson.JSON;
import com.jzsm.common.utils.AssertUtils;
import com.jzsm.modules.sender.pojo.PushChannelAccount;
import com.jzsm.modules.sender.bo.accountConfig.WorkWeixinAccountConfigBo;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;

public class WorkWeixinUtils {
    /**
     * 构建企业微信配置
     *
     * @param setting
     * @return
     */
    private static WxCpServiceImpl setWxEnterpriseConfig(PushChannelAccount setting) {
        WxCpDefaultConfigImpl config = new WxCpDefaultConfigImpl();
        // 注册的企业信息
        String accountConfig = setting.getAccountConfig();
        AssertUtils.isNotBlank("企业微信配置信息不允许为空！", accountConfig);
        WorkWeixinAccountConfigBo configBo = JSON.parseObject(accountConfig, WorkWeixinAccountConfigBo.class);

        // 企业ID
        String corpId = configBo.getCorpId();
        AssertUtils.isNotBlank("corpId 不允许为空！", corpId);
        config.setCorpId((String) corpId);

        // 自建应用Secret
        String secret = configBo.getSecret();
        AssertUtils.isNotBlank("secret 不允许为空！", secret);
        config.setCorpSecret(secret);

        // 自建应用 id
        Integer agentId = configBo.getAgentId();
        AssertUtils.isNotNull("agentId 不允许为空！", agentId);
        config.setAgentId(agentId);

        WxCpServiceImpl wxCpService = new WxCpServiceImpl();
        wxCpService.setWxCpConfigStorage(config);
        return wxCpService;
    }


    /**
     * 获取企业微信当前上下文
     *
     * @param channelAccount 渠道账号
     * @return
     */
    public static WxCpServiceImpl getWxCpService(PushChannelAccount channelAccount) {
        return setWxEnterpriseConfig(channelAccount);
    }
}
